import axios from 'axios';
import { Toast } from 'vant';

// 创建 axios 实例
const http = axios.create({
  baseURL: 'http://47.94.6.186:3005/',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log('创建axios实例，baseURL:', http.defaults.baseURL);

// 请求拦截器
http.interceptors.request.use(
  config => {
    // 添加token到请求头
    const token = localStorage.getItem('token');
    console.log('请求拦截器 - token:', token);
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
      console.log('添加Authorization头:', config.headers.Authorization);
    } else {
      console.warn('未找到token');
    }
    console.log('请求URL:', config.url);
    console.log('请求方法:', config.method);
    console.log('请求数据:', config.data);
    return config;
  },
  error => {
    console.error('请求拦截器错误:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  response => {
    // 对响应数据进行处理
    console.log('响应状态:', response.status);
    console.log('响应数据:', response.data);
    if (response.data) {
      return response.data;
    }
    return response;
  },
  error => {
    // 对响应错误进行处理
    console.error('请求错误:', error);
    if (error.response) {
      // 服务器返回了错误状态码
      console.error('错误状态码:', error.response.status);
      console.error('错误响应数据:', error.response.data);
      if (error.response.data && error.response.data.message) {
        Toast(error.response.data.message);
      } else {
        Toast(`请求失败: ${error.response.status}`);
      }
      // 处理401未授权错误，可能需要重新登录
      if (error.response.status === 401) {
        localStorage.removeItem('token');
        localStorage.removeItem('user');
        window.location.href = '/login';
      }
    } else if (error.request) {
      // 请求已发送但未收到响应
      Toast('网络错误，无法连接服务器');
    } else {
      // 设置请求时发生错误
      Toast('请求配置错误');
    }
    return Promise.reject(error);
  }
);

export default http;